package top.bug.blog.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import top.bug.blog.entity.dto.common.BatchRequest;
import top.bug.blog.entity.po.SensitiveWord;
import top.bug.blog.exception.BussinessException;

import java.util.List;

/**
 * @author <a href="https://github.com/jiusi66">九思.</a>
 * @email 10837907@qq.com
 * @from <a href="https://www.52bug.top">递归茶馆-www.52bug.top</a>
 * @description 敏感词 service
 */
public interface SensitiveWordFilterService {

    /**
     * 过滤文本内容
     *
     * @param text 待过滤文本
     * @return 过滤后的文本
     * @throws BussinessException 当包含禁用词时抛出异常
     */
    String filter(String text) throws BussinessException;

    /**
     * 检查文本是否包含敏感词
     *
     * @param text 待检查文本
     * @return 是否包含敏感词
     */
    boolean containsSensitiveWord(String text);

    /**
     * 检查是否需要审核
     */
    boolean isReviewRequired();

    /**
     * 获取审核词列表
     */
    List<String> getReviewWords();

    /**
     * 清理审核上下文
     */
    void clearReviewContext();

    /**
     * 刷新敏感词缓存
     */
    void refreshSensitiveWords();

    /**
     * 获取敏感词列表
     */
    Page<SensitiveWord> getList(SensitiveWord queryRequest);

    /**
     * 新增敏感词
     */
    Boolean add(SensitiveWord addRequest);

    /**
     * 更新敏感词
     */
    Boolean edit(SensitiveWord updateRequest);

    /**
     * 删除敏感词
     */
    Boolean delete(BatchRequest batchRequest);
}